Skip to content

Conversation

@jonhealy1
Copy link
Collaborator

@jonhealy1 jonhealy1 commented Dec 9, 2025

Related Issue(s):

Description:

  • Added DELETE /catalogs/{catalog_id}/collections/{collection_id} endpoint to support removing collections from catalogs. When a collection belongs to multiple catalogs, it removes only the specified catalog from the collection's parent_ids. When a collection belongs to only one catalog, the collection is deleted entirely.
  • Added parent_ids internal field to collections to support multi-catalog hierarchies. Collections can now belong to multiple catalogs, with parent catalog IDs stored in this field for efficient querying and management.

PR Checklist:

  • Code is formatted and linted (run pre-commit run --all-files)
  • Tests pass (run make test)
  • Documentation has been updated to reflect changes, if applicable
  • Changes are added to the changelog

@jonhealy1 jonhealy1 marked this pull request as ready for review December 9, 2025 07:18
@jonhealy1 jonhealy1 merged commit 352890e into stac-utils:main Dec 9, 2025
8 checks passed
@jonhealy1 jonhealy1 deleted the add_parent_ids branch December 9, 2025 14:30
@jonhealy1 jonhealy1 mentioned this pull request Dec 15, 2025
4 tasks
jonhealy1 added a commit that referenced this pull request Dec 15, 2025
**Related Issue(s):**

- None

**Description:**

#### Added

- Environment variable `VALIDATE_QUERYABLES` to enable/disable
validation of queryables in search/filter requests. When set to `true`,
search requests will be validated against the defined queryables,
returning an error for any unsupported fields. Defaults to `false` for
backward
compatibility.[#532](#532)
- Environment variable `QUERYABLES_CACHE_TTL` to configure the TTL (in
seconds) for caching queryables. Default is `1800` seconds (30 minutes)
to balance performance and freshness of queryables data.
[#532](#532)
- Added optional `/catalogs` route support to enable federated
hierarchical catalog browsing and navigation.
[#547](#547)
- Added DELETE `/catalogs/{catalog_id}/collections/{collection_id}`
endpoint to support removing collections from catalogs. When a
collection belongs to multiple catalogs, it removes only the specified
catalog from the collection's parent_ids. When a collection belongs to
only one catalog, the collection is deleted entirely.
[#554](#554)
- Added `parent_ids` internal field to collections to support
multi-catalog hierarchies. Collections can now belong to multiple
catalogs, with parent catalog IDs stored in this field for efficient
querying and management.
[#554](#554)
- Added GET `/catalogs/{catalog_id}/children` endpoint implementing the
STAC Children extension for efficient hierarchical catalog browsing.
Supports type filtering (?type=Catalog|Collection), pagination, and
returns numberReturned/numberMatched counts at the top level.
[#558](#558)
- Implemented context-aware dynamic linking: catalogs use dynamic
`rel="children"` links pointing to the `/catalogs/{id}/children`
endpoint, and collections have context-dependent `rel="parent"` links
(pointing to catalog when accessed via
`/catalogs/{id}/collections/{id}`, or root when accessed via
`/collections/{id}`). Catalog links are only injected in catalog
context. This eliminates race conditions and ensures consistency with
parent_ids relationships.
[#559](#559)

#### Changed

- Have opensearch datetime, geometry and collections fields defined as
constant strings
[#553](#553)

#### Fixed

- Fix unawaited coroutine in `stac_fastapi.core.core`.
[#551](#551)
- Parse `ES_TIMEOUT` environment variable as an integer.
[#556](#556)
- Implemented "Smart Unlink" logic in delete_catalog: when cascade=False
(default), collections are unlinked from the catalog and become
root-level orphans if they have no other parents, rather than being
deleted. When cascade=True, collections are deleted entirely. This
prevents accidental data loss and supports poly-hierarchy scenarios
where collections belong to multiple catalogs.
[#557](#557)
- Fixed delete_catalog to use reverse lookup query on parent_ids field
instead of fragile link parsing. This ensures all collections are found
and updated correctly, preventing ghost relationships where collections
remain tagged with deleted catalogs, especially in large catalogs or
pagination scenarios.
[#557](#557)


**PR Checklist:**

- [x] Code is formatted and linted (run `pre-commit run --all-files`)
- [x] Tests pass (run `make test`)
- [x] Documentation has been updated to reflect changes, if applicable
- [x] Changes are added to the changelog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant